package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.NoteLike;

/**
 * 笔记点赞记录Service接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface INoteLikeService 
{
    /**
     * 查询笔记点赞记录
     * 
     * @param likeId 笔记点赞记录主键
     * @return 笔记点赞记录
     */
    public NoteLike selectNoteLikeByLikeId(Long likeId);

    /**
     * 查询笔记点赞记录列表
     * 
     * @param noteLike 笔记点赞记录
     * @return 笔记点赞记录集合
     */
    public List<NoteLike> selectNoteLikeList(NoteLike noteLike);

    /**
     * 新增笔记点赞记录
     * 
     * @param noteLike 笔记点赞记录
     * @return 结果
     */
    public int insertNoteLike(NoteLike noteLike);

    /**
     * 修改笔记点赞记录
     * 
     * @param noteLike 笔记点赞记录
     * @return 结果
     */
    public int updateNoteLike(NoteLike noteLike);

    /**
     * 批量删除笔记点赞记录
     * 
     * @param likeIds 需要删除的笔记点赞记录主键集合
     * @return 结果
     */
    public int deleteNoteLikeByLikeIds(Long[] likeIds);

    /**
     * 删除笔记点赞记录信息
     * 
     * @param likeId 笔记点赞记录主键
     * @return 结果
     */
    public int deleteNoteLikeByLikeId(Long likeId);

    /**
     * 切换点赞状态
     * 
     * @param userId 用户ID
     * @param noteType 笔记类型
     * @param noteId 笔记ID
     * @return 结果（true=已点赞，false=已取消点赞）
     */
    public boolean toggleLike(Long userId, String noteType, Long noteId);

    /**
     * 检查用户是否已点赞
     * 
     * @param userId 用户ID
     * @param noteType 笔记类型
     * @param noteId 笔记ID
     * @return 结果
     */
    public boolean isLiked(Long userId, String noteType, Long noteId);

    /**
     * 统计笔记点赞数
     * 
     * @param noteType 笔记类型
     * @param noteId 笔记ID
     * @return 点赞数
     */
    public int countLikesByNote(String noteType, Long noteId);

    /**
     * 查询用户点赞的笔记列表
     * 
     * @param userId 用户ID
     * @return 点赞记录集合
     */
    public List<NoteLike> selectUserLikedNotes(Long userId);
}